package com.cq.hd.member.api.vo;

import com.alibaba.fastjson.annotation.JSONField;
import com.cq.hd.common.serialize.Decimal2Serializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

@Data
public class AdminWithdrawalApplyPageVo implements Serializable {

    @ApiModelProperty(value = "id")
    private Long id;

    @ApiModelProperty(value = "申请单号")
    private String applyNo;

    @ApiModelProperty(value = "提现用户id/商户id")
    private Long withdrawalUserId;

    @ApiModelProperty(value = "商户编号")
    private String merchantNo;

    @ApiModelProperty(value = "所属商家id(商户补贴存在)")
    private Long businessId;

    @ApiModelProperty(value = "所属商家编号(商户补贴存在)")
    private String businessNo;

    @ApiModelProperty(value = "提现类型(1-商户本金提现，2-佣金提现，3-商户补贴提现)")
    private Integer withdrawalType;

    @ApiModelProperty(value = "提现金额")
    @JsonSerialize(using = Decimal2Serializer.class)
    private BigDecimal tradeAmt;

    @ApiModelProperty(value = "提现手续费")
    @JsonSerialize(using = Decimal2Serializer.class)
    private BigDecimal feeAmt;

    @ApiModelProperty(value = "核算扣费")
    @JsonSerialize(using = Decimal2Serializer.class)
    private BigDecimal checkDeductAmt;

    @ApiModelProperty(value = "申请时间")
    @JSONField(format = "yyyy.MM.dd HH:mm:ss")
    private LocalDateTime applyTime;

    @ApiModelProperty(value = "状态（1-待审核，2-审核失败，3-审核成功，4-提现中，5-提现成功，6-提现失败，7-待商户确认，8-商户已确认，待平台打款）")
    private Integer state;

    @ApiModelProperty(value = "提现失败原因")
    private String refuseReason;

    @ApiModelProperty(value = "银行卡账户名称")
    private String cardName;

    @ApiModelProperty(value = "银行卡卡号")
    private String cardNo;

    @ApiModelProperty(value = "开户银行")
    private String bankName;

    @ApiModelProperty(value = "调用汇付失败原因")
    private String hfFailReason;

    @ApiModelProperty(value = "审核时间")
    @JSONField(format = "yyyy.MM.dd HH:mm:ss")
    private LocalDateTime auditTime;

    @ApiModelProperty(value = "到账时间")
    @JSONField(format = "yyyy.MM.dd HH:mm:ss")
    private LocalDateTime arriveTime;

    @ApiModelProperty(value = "申请人/申请商户")
    private String nickName;

    @ApiModelProperty(value = "商家资金账户类型(1:自建资金账户 2:平台资金账户)")
    private Integer businessFinancialAccountType;

    @ApiModelProperty(value = "商户资金账户类型(1:自建资金账户 2:平台资金账户)")
    private Integer merchantFinancialAccountType;

    @ApiModelProperty(value = "备注")
    private String remark;

    @ApiModelProperty(value = "商家简称")
    private String businessShortName;

    @ApiModelProperty(value = "核算单id")
    private Long checkBillId;

    @ApiModelProperty(value = "核算单状态：1-待确认 2-已确认")
    private Integer checkStatus;

}
